Test for correct library search paths during cargo run
authorMatt Brubeck <mbrubeck@limpet.net>
Mon, 6 Jun 2016 17:09:33 +0000 (10:09 -0700)
committerMatt Brubeck <mbrubeck@limpet.net>
Mon, 6 Jun 2016 17:16:50 +0000 (10:16 -0700)
tests/run.rs

index 53ab2b0cbf92e196cb74b3c120939087027fb4db..7f821eef96b86d61f7cc1ee4f0aa8b53dd730e46 100644 (file)
@@ -1,8 +1,10 @@
+extern crate cargo;
 extern crate cargotest;
 extern crate hamcrest;
 
 use std::path::MAIN_SEPARATOR as SEP;
 
+use cargo::util::paths::dylib_path_envvar;
 use cargotest::support::{project, execs, path2url};
 use hamcrest::{assert_that, existing_file};
 
@@ -578,3 +580,33 @@ fn run_from_executable_folder() {
 hello
 "));
 }
+
+#[test]
+fn run_with_library_paths() {
+    let p = project("foo")
+        .file("Cargo.toml", r#"
+            [project]
+            name = "foo"
+            version = "0.0.1"
+            authors = []
+            build = "build.rs"
+        "#)
+        .file("build.rs", r#"
+            fn main() {
+                println!("cargo:rustc-link-search=native=foo");
+                println!("cargo:rustc-link-search=bar");
+                println!("cargo:rustc-link-search=/path=containing=equal=signs");
+            }
+        "#)
+        .file("src/main.rs", &format!(r#"
+            fn main() {{
+                let search_path = std::env::var_os("{}").unwrap();
+                let paths = std::env::split_paths(&search_path).collect::<Vec<_>>();
+                assert!(paths.contains(&"foo".into()));
+                assert!(paths.contains(&"bar".into()));
+                assert!(paths.contains(&"/path=containing=equal=signs".into()));
+            }}
+        "#, dylib_path_envvar()));
+
+    assert_that(p.cargo_process("run"), execs().with_status(0));
+}